package pluginInterfaces;

import java.io.Serializable;

import utils.weka.core.SelectedTag;

/* 
 * Interface for managing configurations of recommendation algorithms. 
 */
public interface IRecommender extends Serializable {
	
	/*
	 * Set name to recommendation algorithm according to parameter name.
	 * @param name name of recommendation algorithm configuration.
	 */
	public void setName(String name);

	
	/*
	 * Get name to recommendation algorithm.
	 * @return name of recommendation algorithm.
	 */	
	public String getName();
	
	
	/*
	 * Get recommendation algorithm plugin.</br>
	 * Obtained plugin is manipulable through its {@link IPluginAlgorithm} interface.
	 * @return plugin of recommendation algorithm.
	 */
	public IPluginAlgorithm getAlgorithm();
	

	/*
	 * Set recommendation algorithm plugin.
	 * @param algorithm plugin of recommendation algorithm.
	 */
	public void setAlgorithm(IPluginAlgorithm algorithm);
	
    
	/*
	 * Get event type to recommend.
	 * @return event type to recommend.
	*/
	public SelectedTag getEventTypeRecommended();
    

	/*
	 * Set event type to recommend.
	 * @param newType event type to recommend.
	*/
	public void setEventTypeRecommended(SelectedTag newType);
	
}
